/***************************************************************************************************
 *Copyright(C),2010-2017,Sumscope
 *FileName	:  pinyin_search_buffer.h
 *Author	:  scofined.qi
 *Version	:  1.0
 *Date		:  2017/06/05
 *Desc		:  //用于主要说明此程序文件完成的主要功能
 *Relation :
 *Others	:  //其他内容说明
 *Function :  //主要函数列表，每条记录应包含函数名及功能简要说明
 *History	:
 * //修改历史记录列表，每条修改记录应包含修改日期、修改者及修改内容简介
 ***************************************************************************************************/
#pragma once

#include "../pinyin_search.h"

namespace qb {
namespace base {
class StringPage;

namespace internal {
class BondChangeBuffer {
 public:
  struct ChangeItem {
    int id;            // index in AfxGetBondContainer
    kChangeType type;  //
    int oldlen, nowlen;
    const char* old;  // 旧值
    const char* now;  // 新值
  };

 protected:
  std::vector<ChangeItem> m_items;
  qb::base::StringPage* m_page;

 public:
  BondChangeBuffer();
  ~BondChangeBuffer();
  void Reset();
  void Reserve(int ncount);
  void AddChange(int id, kChangeType type, const char* oldName, int oldLen,
                 const char* name, int len);
  void AddNameChange(int id, const char* oldName, int oldLen, const char* name,
                     int len);
  void AddNameEnChange(int id, const char* oldName, int oldLen,
                       const char* name, int len);
  void AddCodeChange(int id, const char* oldCode, int oldLen, const char* code,
                     int len);
  int GetCount() const { return m_items.size(); }
  int GetChange(int index, kChangeType& type, const char*& old,
                const char*& now) const;
  const ChangeItem& GetChangeItem(int index) const;
};

}  // namespace internal
}  // namespace base
}  // namespace qb
